#!/bin/bash
#单机版创建ansible免交互环境


_single_ansible  ()  {
IP=$(hostname -I |xargs -n 1   | grep  $(ip route |head  -n 1 | awk    '{print  $3}'  |  awk  -F  '.'  '{print  $1"."$2"."$3}')) ||IP=$(hostname -I |xargs -n 1   | grep  $(ip route |head  -n 1 | awk    '{print  $3}'  |  awk  -F  '.'  '{print  $1"."$2"."}'))
# 上面这句就是获取本机的ip
# password_=$(whiptail --title "#请输入新增Node节点服务器统一的root密码 并回车#" --passwordbox "请确认所有节点(含本机)root密码一致,确定提交?" 10 60 3>&1 1>&2 2>&3)



master_hosts_=$IP
# master_hosts_设置为本机的ip



# 安装ansible  libselinux-python  sshpass免除密码输入
yum install ansible   libselinux-python   sshpass   -y   >   /dev/null




#ansible调优

# sed 文本编辑  -i ：直接修改读取的文件内容，而不是输出到终端
# sed -i 's/原字符串/新字符串/g'
# 就是把ansible配置文件的这一句取消注释
# 取消之后，就不用敲yes了
sed  s/'#host_key_checking = False'/'host_key_checking = False'/g   /etc/ansible/ansible.cfg  -i

# 把ansible的pipelining打开，作用是对ansible指令加速
sed  s/'#pipelining = False'/'pipelining = True'/g   /etc/ansible/ansible.cfg  -i

# OpenSSH连接优化
sed      '/^GSSAPI/s/yes/no/g;  /UseDNS/d; /Protocol/aUseDNS no'    /etc/ssh/sshd_config   -i

# default的情况下，facts是会被收集的的，我们可以通过设定参数gather_facts让其不被收集
echo  'gather_facts: nogather_facts: no' >> /etc/ansible/ansible.cfg

# 重新启动sshd服务
systemctl restart  sshd

#清除本地ssh环境
\rm -f ~/.ssh/*

#创建秘钥对
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N  ""  # &>/dev/null

#配置免交互登录
ssh-keygen   -R  $IP 2>/dev/null
sshpass   -p  "$password_"  ssh-copy-id   -i  /root/.ssh/id_dsa.pub   root@$IP   -o StrictHostKeyChecking=no 


###配置ansible hosts文件
grep   master /etc/ansible/hosts  || {
cat >>/etc/ansible/hosts<<EOF
[master]
$IP

[slave]

[all]
$IP

[dfs1]
$IP

[gpu]
$IP

[db]
$IP

EOF
} 
}


